package cn.ubest.mvvmcore.utils;

import android.os.SystemClock;
import android.view.View;

/**
 * desc   : 防双击判断工具类
 */
public final class DoubleClickHelper {

    private static final long[] TIME_ARRAY = new long[2]; // 数组的长度为2代表只记录双击操作
    private static final int INTERVAL_TIME = 500; // 间隔时间

    /**
     * 是否在短时间内进行了双击操作
     */
    public static boolean isOnDoubleClick() {
        // 默认间隔时长
        return isOnDoubleClick(INTERVAL_TIME);
    }

    /**
     * 是否在短时间内进行了双击操作
     */
    public static boolean isOnDoubleClick(int time) {
        System.arraycopy(TIME_ARRAY, 1, TIME_ARRAY, 0, TIME_ARRAY.length - 1);
        TIME_ARRAY[TIME_ARRAY.length - 1] = SystemClock.uptimeMillis();
        return TIME_ARRAY[0] >= (SystemClock.uptimeMillis() - time);
    }

    /**
     * 单击的click
     */
    public static abstract class OnClickListener implements View.OnClickListener {

        public abstract void onClicked(View view);

        @Override
        public void onClick(View v) {
            if (!isOnDoubleClick()) {
                onClicked(v);
            }
        }
    }


}